There are many applications of the Internet that require the creation and management of a session, where a session is considered an exchange of data and signaling between parties or members of the session. Session initiation protocol (SIP) is an application-layer control protocol for creating, modifying, and terminating sessions, which can include network communications such as Internet telephone calls, multimedia distribution, and multimedia conferences. Parties in a session can communicate via unicast, multicast, or a mesh of unicast communications. SIP is described in Rosenberg et. al., SIP: Session Initiation Protocol, Internet Engineering Task Force (IETF) Request for Comments (RFC) 3261, June 2002, the disclosure of which is incorporated herein by reference in its entirety. A related protocol used to describe sessions between communicating parties is the Session Description Protocol (SDP), which is described in Handley et al., SDP: Session Description Protocol, IETF RFC 4566, July 2006, the disclosure of which is incorporated herein by reference in its entirety.
With respect to Internet communications, network address translation (NAT) is a technique by which Internet protocol (IP) addresses are mapped from one realm or domain, usually private, to another, usually public, in an attempt to provide transparent routing to hosts while ensuring topology hiding and providing firewall security. This is achieved by modifying endpoint addresses en-route and maintaining a state for these updates so that messages pertaining to a session are routed to the right endpoint in either realm. IP NAT is described in Srisuresh et. al., IP Network Address Translator (NAT) Terminology and Considerations, Internet Engineering Task Force (IETF) Request for Comments (RFC) 2662, August 1999, the disclosure of which is incorporated herein by reference in its entirety. Network Address Port Translation (NAPT) provides network address translation like NAT, but also translates transport identifiers, such as transmission control protocol/user datagram protocol (TCP/UDP) port identifiers. Devices having NAT or NAPT functionality are interchangeably referenced as either a NAT device or a NAPT device.
NAT devices or NAPT devices bind addresses in one realm, for example a private network, with addresses in another realm, for example a global or public network. Address binding, also known as providing a “pin hole,” is the phase in which a local node IP address is associated with an external address or vice versa, for purposes of translation. With respect to NAPT, a NAT device can also bind using transport identifiers, such as TCP/UDP port identifiers. Once the binding between two addresses is in place, all subsequent sessions originating from or to this host will use the same binding for session-based packet translation.
NAT devices may assume that a session has terminated after a time interval beginning when the last time a message in the session was detected on a port. A port address binding can remain unchanged until after the time interval the NAT device deems as inactivity on a port. After the NAT device determines or assumes that there is inactivity on a port, the port address binding for the port is reset, and the endpoint behind the NAT device that is associated with the binding, in the private network, will be unreachable. To reach the endpoint again, another session has to be initiated to restart communication between the endpoint and the other party or parties to the session. Accordingly, it is desirable to keep a binding unchanged, or pin hole open, until a session is explicitly terminated, not when a NAT device erroneously assumes the session to be terminated.